package com.caregiver.watch.business.user.dao;


import com.caregiver.watch.business.user.model.po.UserChatMessageReadRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户聊天消息已读记录 数据层
 */
@Mapper
public interface UserChatMessageReadRecordDao {


    /**
     * 根据聊天窗口ID查询已读记录ID
     *
     * @param chatWindowId 聊天窗口ID
     * @return 用户聊天消息已读记录
     */
    Long queryReadRecordIdByChatWindowId(@Param("chatWindowId") Long chatWindowId, @Param("userId") Long userId);


    /**
     * 插入或者更新用户聊天消息已读记录
     * @param userChatMessageReadRecord
     * @return
     */
    int insertUserChatMessageReadRecordIfNotExist(UserChatMessageReadRecord userChatMessageReadRecord);

    /**
     * 新增用户聊天消息已读记录
     * 
     * @param userChatMessageReadRecord 用户聊天消息已读记录
     * @return 结果
     */
    int insertUserChatMessageReadRecord(UserChatMessageReadRecord userChatMessageReadRecord);
    
    /**
     * 修改用户聊天消息已读记录
     * 
     * @param userChatMessageReadRecord 用户聊天消息已读记录
     * @return 结果
     */
    int updateUserChatMessageReadRecord(UserChatMessageReadRecord userChatMessageReadRecord);
    
    /**
     * 更新已读消息最大ID
     * 
     * @param readRecordId 已读记录ID
     * @param maxReadMessageId 已读消息最大ID
     * @return 结果
     */
    int updateMaxReadMessageId(Long readRecordId, Long maxReadMessageId);
    
    /**
     * 删除用户聊天消息已读记录
     * 
     * @param readRecordId 已读记录ID
     * @return 结果
     */
    int deleteUserChatMessageReadRecordById(Long readRecordId);
    
    /**
     * 批量删除用户聊天消息已读记录
     * 
     * @param readRecordIds 需要删除的已读记录ID数组
     * @return 结果
     */
    int deleteUserChatMessageReadRecordByIds(List<Long> readRecordIds);
}
